// // /*
// // //  Author:   Lechi66(EnricLiu)
// // //  Version:  ?
// // //  Date:     2023/11/26
// // //  DocRef:   https://www.xfyun.cn/doc/spark/%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E.html
// // //            https://bot.q.qq.com/wiki/develop/nodesdk/
// // //
// // //  test
// // //
// // */
// // const fs = require('fs');
// // const NeDB = require('nedb');
// // const { createOpenAPI, createWebsocket } = require('qq-guild-bot');




// // async function readAPI() {
// //   try{
// //     let {SparkConfig: sparkcfg, QQBotConfig: qqbotcfg, guildID: gid, channelID: cid} = JSON.parse(fs.readFileSync('APIconfig.json'));
// //     SparkConfig = sparkcfg;
// //     QQBotConfig = qqbotcfg;
// //     guildID = gid;
// //     channelID = cid;
// //     console.log('[INFO]   APIconfig.json 读取成功');
// //   }
// //   catch(err){
// //     console.log(err);

// //   };
// // };

// // async function main(){
// //   try {
// //     await readAPI();
// //     const client =  createOpenAPI(QQBotConfig);// 创建 client
// //     const wsQQBot = createWebsocket(QQBotConfig);// 创建websocket连接

// //     wsQQBot.on('GUILD_MESSAGES', ( data ) => {
// //       console.log(data);
// //       if( 'attachments' in data.msg ){
// //         console.log(data.msg.attachments);
// //       };
// //     });
// //   } 
// //   catch(err){
// //     console.log(err);
// //   };
// // };
// // // const dbContext = new NeDB({
// // //   filename: './contxt.db',
// // //   autoload: true
// // // });// 实例化context数据库
// // // const dbMember = new NeDB({
// // //   filename: './user.db',
// // //   autoload: true
// // // });// 实例化context数据库


// // // main();

// // class test{
// //     constructor(input){
// //         this.str = input;
// //     };

// //     obj = {
// //         fn: function(){
// //             console.log(this.str);
// //         }.bind(this)
// //     }
// // }
// // let Test = new test('good');
// // Test.obj.fn();

// // let TTL = 100;
// // setTimeout(()=>{if(TTL) console.log(TTL--)},1000);

// // const fs = require('fs');

// // let { v1: TokenV1, v2: TokenV2, v3: TokenV3} = JSON.parse(fs.readFileSync('Token.json', 'utf-8'));
// // console.log(TokenV1, TokenV2, TokenV3);


// // let MsgTemp = await new Promise((console.log, reject)=>{
//       //   let TTL = 12;
//       //   async function dbfind(){
//       //     console.log('[DBINFO] DBContext: 查询上下文 TTL=' + TTL);
//       //     dbContext.find({ userID:   MsgParsed.author.id, 
//       //                      guildID:  MsgParsed.guildID, 
//       //                      channelID:MsgParsed.channelID },
//       //     (err, data) => {
//       //       if (err){ reject(err) }
//       //       else if ( TTL === 0 ) { console.log(-1) }    // 读取TTL次失败
//       //       else if ( data == false ) { console.log([]) } // 判断是不是空数组(第一句话)
//       //       else if (data.length & 1) {
//       //         // 如果data的长度是奇数且flag为真(提醒用户稍等spark回复/数据库暴毙)
//       //         // if (TTL-- === 10) {
//       //         //   Send({
//       //         //     channelID: MsgParsed.channelID,
//       //         //     msg_id:    MsgParsed.id,
//       //         //     author:    MsgParsed.author,
//       //         //     content:   '正在回忆上下文 稍等一下捏<emoji:353>'});
//       //         // };
//       //         // 不好使 算了
//       //         // console.log('TTL: ' + TTL);
//       //         TTL--;
//       //         setTimeout(()=>dbfind(), 500);// 500ms看一次，拿到偶数length的datas为止，写到data里
//       //       } else { console.log(data) };
//       //     });
//       //   };
//       //   dbfind();
//       // });// 阻塞读取dbContext
//       //QQBOT Line_200

// // function good(){
// //     return "not", Infinity;
// // }
// // let a, b = good();
// // console.log(a, b);

// // let j = new Array();

// // console.log(j.length);

// // const nedb = require('nedb');

// // let good = new nedb({
// //   filename: './res/cache/test.db',
// //   autoload: true});

// // good.insert({a: 1});

// // good.findOne({a: 1}, (err, doc) =>{
// //       console.log(err, doc);
// // })

// const Spark = require('./src/Spark');

// let SparkConfig =  {
//   APPID:      "********",
//   APISecret:  "********************************",
//   APIKey:     "********************************"
// };

// let SendToSparkMsg = {
//       header: {
//         app_id: SparkConfig.APPID,
//       },
//       parameter: {
//         chat: {
//           domain: "generalv3",
//           temperature: 0.8,     // 取值[0,1], 取值越高随机性越强
//           max_tokens: 2048,     // v1.5, v2, v3取值[1,4096], [1,8192], [1,8192], 模型回答的tokens的最大长度
//           top_k: 4,
//         }
//       },
//       payload: {
//         message: {
//           "text":[{ role: "user", content: "你好" }]
//         }
//       }
//     };// 发送给wsSpark的消息对象

// let spark = new Spark(SparkConfig);
// let wsSpark = spark.ws;
// wsSpark.on('open', (err) => {
//       if (err) {
//         console.log(`[ERROR]  wsSpark_Open_ERR: ${err}`);
//         reject(err);
//       }
//       wsSpark.send(JSON.stringify(SendToSparkMsg));
//       console.log('[Spark]  SparkAPI鉴权成功 回答中');
//     });// 发送SendToSparkMsg

//     let SparkReply;
// wsSpark.on('message', (data, err) => {
//       if (err) {
//       console.log(`[ERROR]  wsSpark_Message_ERR: ${err}`);
//       reject(err);
//       }else if (JSON.parse(data).header.code != 0){
//       switch (JSON.parse(data).header.code){

//       case 10000:case 10001:case 10002: console.log('[ERROR]  ws错误'+ JSON.parse(data).header.code); console.log("SparkAPI_WebSocket错误"); break;
//       case 10003:case 10004:case 10005: console.log('[ERROR]  ws错误'+ JSON.parse(data).header.code); console.log("SparkAPI消息格式错误"); break;
//       case 10013:case 10014: console.log("什么逆天发言(｀へ´)? 叉出去"); break;
//       case 11201: console.log("日流超限了<emoji:289>下班<emoji:355>"); break;
//       case 11202:case 11203: console.log("发得太快了<emoji:34>让我反应一下<emoji:34>"); break;
//       default: console.log("李再嗦神魔？" + JSON.parse(data).header.code);
//       };
//       }else {
//       SparkReply += JSON.parse(data).payload.choices.text[0].content;
//       if (JSON.parse(data).payload.choices.status == 2) {
//       console.log({content: SparkReply, token: JSON.parse(data).payload.usage.text.total_tokens});
//       };
//       };
// });